package or.exa.cangguan.service.impl;


import cn.hutool.core.bean.BeanUtil;
import lombok.extern.slf4j.Slf4j;
import or.exa.cangguan.common.Page;
import or.exa.cangguan.common.Redis;
import or.exa.cangguan.entity.dto.StoreDto;
import or.exa.cangguan.entity.po.Store;
import or.exa.cangguan.entity.vo.StoreVo;
import or.exa.cangguan.mapper.StoreMapper;
import or.exa.cangguan.service.StoreService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;


import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

@Slf4j
@Service
public class StoreServiceImpl implements StoreService {

    @Autowired
    private StoreMapper storeMapper;
    @Autowired
    private Redis redis;



//    新增
    @Override
    public int insert(StoreVo StoreVo) {
        Date date = new Date(System.currentTimeMillis());


        Store store = new Store();
        BeanUtil.copyProperties(StoreVo,store);

        store.setState("0");
        store.setCreateTime(date);
        store.setCreateBy(0);
        store.setUpdateTime(date);
        store.setUpdateBy(0);


        redis.del("storeName");

        return storeMapper.insert(store);
    }


    //查询
    public Page selectStore(StoreVo StoreVo) {


//        总行数
        Integer totalNum = storeMapper.selectStoreCount(StoreVo);
        Page page = new Page();
        BeanUtil.copyProperties(StoreVo,page);
        page.setTotalNum(totalNum);


//        分页查询
        List<StoreDto> storeDtos = storeMapper.selectStore(StoreVo,page);

        page.setResultList(storeDtos);

        return page;
    }

    //查询所有仓库名称
    public List<String> selectStoreName() {

        if (redis.idExists("storeName")){
            return (List<String>) redis.get("storeName");
        }
        else {
            List<String> storeName = storeMapper.selectStoreName();
            redis.set("storeName", storeName);
            return storeName;
        }

    }


    //删除
    @Override
    public int deleteByPrimaryKey(Integer id) {
        redis.del("storeName");

        return storeMapper.deleteByPrimaryKey(id);
    }


    //更新
    @Override
    public int updateByPrimaryKey(StoreVo StoreVo) {
        Date date = new Date(System.currentTimeMillis());

        Store store = new Store();
        BeanUtil.copyProperties(StoreVo,store);

        store.setUpdateBy(0);
        store.setUpdateTime( date);

        redis.del("storeName");

        return storeMapper.updateByPrimaryKey(store);
    }


    //查询所有仓库名称



}
